package cn.group.hotel2.mapper;

import cn.group.hotel2.pojo.vo.CheckOutStandardVO;
import cn.group.hotel2.pojo.vo.CostumerStandardVO;
import cn.group.hotel2.pojo.vo.OrderListItemVO;
import cn.group.hotel2.pojo.vo.OrderStandardVO;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface OrderMapper {

    /**
     * 删除订单
     */
    int deleteById(Long id);

    /**
     * 查询订单列表数量
     * @return
     */
    int count();
    /**
     * 根据订单编号查询表中数据的数量
     * @param orderNum 订单编号
     * @return 查询到的数量
     */
    int countByOrderNum(String orderNum);

    /**
     * 根据客户姓名查询表中数据的数量
     * @param name 客户姓名
     * @return 查询到的数量
     */
    int countByName(String name);

    /**
     * 根据客户手机号查询表中数据的数量
     * @param phone 客户手机号
     * @return 查询到的数量
     */
    int countByPhone(String phone);

    /**
     * 根据客户身份证查询表中数据的数量
     * @param identityCard 客户身份证
     * @return 查询到的数量
     */
    int countByIdentityCard(String identityCard);

    /**
     * 展示订单列表
     */
    List<OrderListItemVO> list();


    /**
     * 展示订单详情
     */
    OrderStandardVO getStandardById(Long id);


    /**
     * 关联查询客户信息
     */
    CostumerStandardVO getStandardByOrderId(Long id);

    /**
     * 根据订单编号查询订单详情
     * @param orderNum 订单编号
     * @return 查询订单的详情
     */
    OrderStandardVO getStandardByOrderNum(String orderNum);

    /**
     * 根据客房名称查询退房时间
     * @param roomTitle 客房名称
     * @return 退房时间
     */
    CheckOutStandardVO getStandardByRoomTitle(String roomTitle);

    /**
     * 分页查询
     * @param current
     * @return
     */
    List<OrderListItemVO> listPage(Integer current);

    List<OrderListItemVO> listByStatus(Integer status);

    Integer countByStatus(Integer status);

    /**
     * 根据订单获取客户的相关信息
     * @return 查询列表的结果
     */
    // CostumerListItemVO listCostumer();

}
